Account for stored pointer offsets in dereference checks#2024
Draft
karoliineh wants to merge 4 commits into
Draft
Account for stored pointer offsets in dereference checks#2024karoliineh wants to merge 4 commits into
karoliineh wants to merge 4 commits into
Conversation
Co-authored-by: Michael Schwarz <michael.schwarz93@gmail.com>
Member
Author
|
I've been going back-and-forth with marking this as a draft and ready because I was unsure if this should be merged before the cleanup or after. For now, the fix will be applied during a cleanup that will be similar to the PR #1864, using access events for the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is on top of #2017 based on #2017 (comment).
Changes:
memOutOfBoundshandling of negative pointer offsets #2017 (comment) that exposed the unsoundnessBinOphandling by passing the original expression through the checks instead of destructuring and reconstructing itBinOpfromcheck_binop_expaltogether because the only place where it is called from is within a match case onBinOp ((PlusPI | MinusPI | IndexPI), ...), but decided to keep it just in case for future, so that it is not called from a wrong place and if it is, would notify with an error message.This is still not an ideal code structure, as evidenced by the need for comments like:
Obviously the overall analysis workflow is a bit non-straightforward if we have to leave comments like this. But that is an issue for another cleanup PR, at least this should fix the unsoundness itself.